package com.wicket.okrframework.web.contorller;

import com.github.pagehelper.Page;
import com.wicket.okrframework.biz.service.HostTypeService;
import com.wicket.okrframework.biz.service.dto.req.*;
import com.wicket.okrframework.biz.service.dto.res.*;
import com.wicket.okrframework.common.ro.OkrResult;
import com.wicket.okrframework.common.util.CommonFunctionHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author ：
 * @date ：
 *
 *
 * @version 1.0
 */
@RestController
@RequestMapping("/base/hostType/")
public class HostTypeController {

    @Autowired
    HostTypeService hostTypeService;

    /**
   * D1-1查询宿主类型列表
   */
    @PostMapping("queryHostTypeList")
    public OkrResult<QueryHostTypeListRespDto> queryHostTypeList(@RequestBody @Validated QueryHostTypeListReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryHostTypeListRespDto retData = hostTypeService.queryHostTypeList(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
   * D1-1查询宿主类型列表（边界）
   */
    @PostMapping("queryHostTypeListBorder")
    public OkrResult<QueryHostTypeListBorderRespDto> queryHostTypeListBorder(@RequestBody @Validated QueryHostTypeListBorderReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryHostTypeListBorderRespDto retData = hostTypeService.queryHostTypeListBorder(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
   * D1-1新增宿主类型
   */
    @PostMapping("addHostType")
    public OkrResult<AddHostTypeRespDto> addHostType(@RequestBody @Validated AddHostTypeReqDto reqDTO){
    return OkrResult.success(hostTypeService.addHostType(reqDTO));
    }

    /**
   * D1-1修改宿主类型
   */
    @PostMapping("updateHostType")
    public OkrResult<UpdateHostTypeRespDto> updateHostType(@RequestBody @Validated UpdateHostTypeReqDto reqDTO){
    return OkrResult.success(hostTypeService.updateHostType(reqDTO));
    }

    /**
   * D1-1查询宿主类型详情
   */
    @PostMapping("queryHostTypeDetail")
    public OkrResult<QueryHostTypeDetailRespDto> queryHostTypeDetail(@RequestBody @Validated QueryHostTypeDetailReqDto reqDTO){
    return OkrResult.success(hostTypeService.queryHostTypeDetail(reqDTO));
    }

    /**
   * D1-1存档宿主类型推荐的业务场景	
   */
    @PostMapping("archiveArchiveHostTypeBizScn")
    public OkrResult<ArchiveArchiveHostTypeBizScnRespDto> archiveArchiveHostTypeBizScn(@RequestBody @Validated ArchiveArchiveHostTypeBizScnReqDto reqDTO){
    return OkrResult.success(hostTypeService.archiveArchiveHostTypeBizScn(reqDTO));
    }

    /**
   * D1-1发布宿主类型推荐到业务场景
   */
    @PostMapping("releaseHostTypeBizScn")
    public OkrResult<ReleaseHostTypeBizScnRespDto> releaseHostTypeBizScn(@RequestBody @Validated ReleaseHostTypeBizScnReqDto reqDTO){
    return OkrResult.success(hostTypeService.releaseHostTypeBizScn(reqDTO));
    }

    /**
   * D1-1查询宿主类型推荐的业务场景列表
   */
    @PostMapping("queryHostTypeBizScnList")
    public OkrResult<QueryHostTypeBizScnListRespDto> queryHostTypeBizScnList(@RequestBody @Validated QueryHostTypeBizScnListReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryHostTypeBizScnListRespDto retData = hostTypeService.queryHostTypeBizScnList(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
   * D1-1新增宿主类型推荐到业务场景
   */
    @PostMapping("addHostTypeBizScn")
    public OkrResult<AddHostTypeBizScnRespDto> addHostTypeBizScn(@RequestBody @Validated AddHostTypeBizScnReqDto reqDTO){
    return OkrResult.success(hostTypeService.addHostTypeBizScn(reqDTO));
    }

    /**
   * D1-1查询宿主类型推荐的业务场景列表（边界）
   */
    @PostMapping("queryHostTypeBizScnListBorder")
    public OkrResult<QueryHostTypeBizScnListBorderRespDto> queryHostTypeBizScnListBorder(@RequestBody @Validated QueryHostTypeBizScnListBorderReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryHostTypeBizScnListBorderRespDto retData = hostTypeService.queryHostTypeBizScnListBorder(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }
/**
   * D1查询业务场景下宿主类型列表
   */
    @PostMapping("queryBizSceneHostTypeList")
    public OkrResult<QueryBizSceneHostTypeListRespDto> queryBizSceneHostTypeList(@RequestBody @Validated QueryBizSceneHostTypeListReqDto reqDTO){
    return OkrResult.success(hostTypeService.queryBizSceneHostTypeList(reqDTO));
    }
/**
   * D1-1删除宿主类型推荐的业务场景
   */
    @PostMapping("deleteHostTypeBizScn")
    public OkrResult<DeleteHostTypeBizScnRespDto> deleteHostTypeBizScn(@RequestBody @Validated DeleteHostTypeBizScnReqDto reqDTO){
    return OkrResult.success(hostTypeService.deleteHostTypeBizScn(reqDTO));
    }
}
